#!/bin/bash

cvc4=./cvc4
bench="$1"

function runl {
  limit=$1; shift;
  ulimit -S -t "$limit";$cvc4 --lang=sygus2 --no-type-checking --no-interactive --dag-thresh=0 "$@" $bench 2>/dev/null
}

function trywith {
  sol=$(runl $@)
  status=$?
  if [ $status -ne 134 ]; then
    echo $sol |&
    (read result w1 w2;
    case "$result" in
    unsat)
      case "$w1" in
        "(define-fun") echo "$w1 $w2";cat;exit 0;;
        esac; exit 1;;
    esac; exit 1)
    if [ ${PIPESTATUS[1]} -eq 0 ]; then exit 0; fi
  fi
}

function finishwith {
  $cvc4 --lang=sygus2 --no-type-checking --no-interactive --dag-thresh=0 "$@" $bench 2>/dev/null |
  (read result w1;
  case "$result" in
  unsat) echo "$w1";cat;exit 0;;
  esac)
}

trywith 10 --sygus-active-gen=enum --sygus-repair-const
trywith 120 --sygus-unif-pi=complete
finishwith --sygus-active-gen=enum
